perm filename SANDP.AX[S78,JMC]2 blob sn#362741 filedate 1978-06-21 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00003 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	| natural numbers								|
C00003 00003	declare INDCONST m0 n0 ε NATNUM
C00008 ENDMK
C⊗;
comment | natural numbers								|

DECLARE OPCONST +(NATNUM,NATNUM)=NATNUM[R←455,L←450];
DECLARE OPCONST -(NATNUM,NATNUM)=NATNUM[R←455,L←450];
DECLARE OPCONST *(NATNUM,NATNUM)=NATNUM[R←555,L←550];

DECLARE PREDCONST < ≤ > ≥(NATNUM,NATNUM) [INF];

ATTACH + ↔ (LAMBDA (X Y) (PLUS X Y));
ATTACH - ↔ (LAMBDA (X Y) (DIFFERENCE X Y));
ATTACH * ↔ (LAMBDA (X Y) (TIMES X Y));
ATTACH < ↔ (LAMBDA (X Y) (LESSP X Y));
ATTACH ≤ ↔ (LAMBDA (X Y) (OR (EQ X Y) (LESSP X Y)));
ATTACH < ↔ (LAMBDA (X Y) (LESSP Y X));
ATTACH ≥ ↔ (LAMBDA (X Y) (OR (EQ X Y) (LESSP Y X)));

declare INDCONST m0 n0 ε NATNUM;
declare INDVAR m n m1 m2 m3 n1 n2 n3 ε NATNUM;

declare INDCONST RW ε WORLD;
declare INDVAR w w1 w2 w3 ε WORLD;

declare OPCONST M(WORLD) = NATNUM;
declare OPCONST N(WORLD) = NATNUM;

declare INDCONST S P SP ε PERSON;
declare INDVAR s s0 s1 s2 ε PERSON;

declare PREDCONST A(WORLD,WORLD,PERSON,NATNUM);
declare PREDCONST ok(NATNUM,NATNUM);

declare PREDCONST agree(WORLD,WORLD);

declare PREDPAR phi(WORLD,WORLD);

axiom agree:	∀w1 w2.(agree(w1,w2) ≡ M(w1) = M(w2) ∧ N(w1) = N(w2));;

axiom reflex:	∀w s m.A(w,w,s,m);;

axiom transitive:	∀w1 w2 w3 s m.(A(w1,w2,s,m) ∧ A(w2,w3,s,m) ⊃ A(w1,w3,s,m));;

axiom sp:	∀w1 w2 m.(A(w1,w2,S,m) ∨ A(w1,w2,P,m) ⊃ A(w1,w2,SP,m))

		∀m.(
		∀w1 w2.(A(w1,w2,S,m) ∨ A(w1,w2,P,m) ⊃ phi(w1,w2)) ∧
		∀w1 w2 w3.(phi(w1,w2) ∧ phi(w2,w3) ⊃ phi(w1,w3))
⊃	∀w1 w2.(phi(w1,w2) ⊃ A(w1,w2,SP,m)))
;;


axiom rw:	m0 = M(RW)
		n0 = N(RW)
;;

axiom ok:	∀m n.(ok(m,n) ≡ 1<m ∧ 1<n ∧ m≤n ∧ m<100 ∧ n<100)
		∀w.ok(M(w),N(w))
;;

axiom initial:
	∀w w1.(A(RW,w,SP,0) ∧ A(w,w1,S,0) ⊃ M(w1)+N(w1) = M(w)+N(w))
	∀w w1.(A(RW,w,SP,0) ∧ A(w,w1,P,0) ⊃ M(w1)*N(w1) = M(w)*N(w))
	∀w m n.(A(RW,w,SP,0) ∧ ok(m,n) ∧ M(w) + N(w) = m + n ⊃
∃w1.(A(w,w1,S,0) ∧ M(w1) = m ∧ N(w1) = n))
	∀w m n.(A(RW,w,SP,0) ∧ ok(m,n) ∧ M(w) * N(w) = m * n ⊃
∃w1.(A(w,w1,P,0) ∧ M(w1) = m ∧ N(w1) = n))
;;

axiom npk:
	∃w.(A(RW,w,P,0) ∧ ¬agree(RW,w))
;;

axiom sknpk:
	∀w.(A(RW,w,S,0) ⊃ ∃w1.(A(w,w1,P,0) ∧ ¬agree(w,w1)))
;;

axiom nsk:
	∃w.(A(RW,w,S,0) ∧ ¬agree(RW,w))
;;

axiom elsknpkansk:
	∀w.(A(RW,w,SP,1) ≡ A(RW,w,SP,0) ∧ 
∀w1.(A(w,w1,S,0) ⊃ ∃w2.(A(w1,w2,P,0) ∧ ¬agree(w1,w2))) ∧
∃w1.(A(w,w1,S,0) ∧ ¬agree(w,w1)))

	∀w1 w2.(A(w1,w2,S,1) ≡ A(w1,w2,S,0) ∧ A(w1,w2,SP,1))

	∀w1 w2.(A(w1,w2,P,1) ≡ A(w1,w2,P,0) ∧ A(w1,w2,SP,1))
;;

axiom pk:
	∀w.(A(RW,w,P,1) ⊃ agree(RW,w))
;;

axiom elpk:
	∀w.(A(RW,w,SP,2) ≡ A(RW,w,SP,1)
∧ ∀w1.(A(w,w1,P,1) ⊃ agree(w,w1)))

	∀w1 w2.(A(w1,w2,S,2) ≡ A(w1,w2,S,1) ∧ A(w1,w2,SP,2))

	∀w1 w2.(A(w1,w2,P,2) ≡ A(w1,w2,P,1) ∧ A(w1,w2,SP,2))
;;

axiom sk:	∀w.(A(RW,w,S,2) ⊃ agree(RW,w));;
	
MARK 1;

declare PREDCONST R0(NATNUM,NATNUM) R1(NATNUM,NATNUM) R2(NATNUM,NATNUM)
R3(NATNUM,NATNUM);

axiom R0:	∀m n.(R0(m,n) ≡ ok(m,n) ∧ ∃m1 n1.(ok(m1,n1) ∧ m1*n1 = m*n
∧ ¬(m1=m ∧ n1=n)))
;;

axiom R1:	∀m n.(R1(m,n) ≡ ok(m,n) ∧
			∀m1 n1.(ok(m1,n1) ∧ m1+n1 = m+n ⊃ R0(m1,n1)) ∧
			∃m1 n1.(m1+n1 = m+n ∧ ¬(m1=m ∧ n1=n)));;


axiom R2:	∀m n.(R2(m,n) ≡ ok(m,n) ∧ 
			∀m1 n1.(m1*n1 = m*n ∧ R1(m1,n1) ⊃ m1=m ∧ n1=n));;

axiom R3:	∀m n.(R3(m,n) ≡ ok(m,n) ∧
			∀m1 n1.(m1+n1 = m+n ∧ R2(m1,n1) ⊃ m1=m ∧ n1=n));;